iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
自我挑戰組

HTML、 PHP CRUD 自我學習系列 第 16

第16天 - PHP 簡易登入(3)_判斷身分

  • 分享至 

  • xImage
  •  

接續昨天的部分,今天的登入會依照你的身分進入不同的頁面(以會員、管理員為例)。
首先先增加資料表的內容,如下。
https://ithelp.ithome.com.tw/upload/images/20210916/20141355CLVjRzI7Wo.png

https://ithelp.ithome.com.tw/upload/images/20210916/20141355i5vqb0VWM3.png

然後程式碼的部分
先新建一個 login_role2.php (判斷身分用的)

<?php
session_start();
	if($_SESSION['auth_role'] == "管理員")
	{
		header('Location: (管理員畫面).php');
		exit(0);
	}
	else
	{
		header('Location: Hello.php');
		exit(0);
	}
?>

然後把昨天 logincode2.php 內容改一下
header('Location: Hello.php'); >> include 'login_role2.php';

<?php
 //判斷session是否已啟動
if(!isset($_SESSION))
{
    session_start();
} 
include 'db_cn.php';

if(isset($_POST['btn_login']))
{
	
	$id = $_POST['id'];
	$password = $_POST['password'];

	$log_query = "SELECT * FROM staff WHERE staff_id='$id' AND st_pass='$password' LIMIT 1";
	$log_query_run = mysqli_query($con,$log_query);

	if(mysqli_num_rows($log_query_run) > 0)
	{
		foreach ($log_query_run as $row){
			$user_id = $row['staff_id'];
			$user_role = $row['staff_role'];
			$staff_name = $row['staff_name'];
		}

		$_SESSION['auth_role'] = "$user_role";
		$_SESSION['auth'] = true;
		$_SESSION['auth_user'] = [
			'user_id' => $user_id,
			'user_role' => $user_role,
			'staff_name' => $staff_name
		];
		include 'login_role2.php';
	}
	else
	{
		$_SESSION['status'] = "帳密輸入錯誤!!";
		header('Location: login2.php');
	}
}
else
{
	$_SESSION['status'] = "登入失敗!!";
	header('Location: login2.php');
}
?>

就樣就會依照身分不同,進到不同畫面,想要判斷更多不同的身分,在 login_role2.php 加

<?php
session_start();
	if($_SESSION['auth_role'] == "管理員")
	{
		header('Location: (管理員畫面).php');
		exit(0);
	}
	else if
	{
		header('Location: Hello.php');
		exit(0);
	}
   else if
	{
		header('Location: 其他畫面.php');
		exit(0);
	}
   .....
?>

額外寫 login_role2.php 是為了方便理解,不然結構太複雜我自己會看不太懂。
我記得剛開始那邊沒分開寫,就很神奇的,只要那個檔案存在,整個網頁都開不起來(很像XAMPP沒開的樣子)
然後拆開之後才解決,可能是 SESSION 的原因?!

最後在提醒一下,做登入的時候一定要順便把登出按鈕(昨天文章有)做出來,否則會被 SESSION 卡住畫面。

PHP登入的部分,應該到這邊就差不多了(雖然還缺驗證碼,防暴力破解)。
不過那個篇幅有點大(為了給驗證碼加雜訊之類的)、目前也還看不太懂,所以這邊就不寫了。

今天就先這樣,下次見。


上一篇
第15天 - PHP 簡易登入(2)_PHP的部分
下一篇
第17天 - 來試著做一個簡易購物系統(1)、補充昨天的登入程式碼
系列文
HTML、 PHP CRUD 自我學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言